package com.kiwilss.aopdemo.ui.room.kotlin

import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.Ignore
import androidx.room.PrimaryKey

/**
 * @author : Administrator
 * e-mail : kiwilss@163.com
 * time   : 2021/02/03
 *  desc  : 在@Entity注解中我们传入了一个参数 tableName用来指定表的名称。
 *  @PrimaryKey注解用来标注表的主键，并且使用autoGenerate = true 来指定了主键自增长。
 *  @ColumnInfo注解用来标注表对应的列的信息比如表名、默认值等等。
 *  @Ignore 注解顾名思义就是忽略这个字段，使用了这个注解的字段将不会在数据库中生成对应的列信息。
 *  也可以使用@Entity注解中的 ignoredColumns 参数来指定，效果是一样的。
 */
@Entity(tableName = "users")
data  class User (
    @PrimaryKey(autoGenerate = true) var id: Int = 0,
    @ColumnInfo(name = "userId") var userId: Int,
    @ColumnInfo(name = "username") var userName: String?,
    @ColumnInfo(name = "china") var address: String?,
    @Ignore var sex: Boolean,
    @ColumnInfo(name = "age") var age: Int = 0
){
    constructor() : this(0,0,null,null,false,0)
}